package cn.tedu.charging.order.rabbitmq;

import com.rabbitmq.client.*;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 管理我们先需要的连接对象
 * 提供一个静态方法 获取连接对象channel
 */
@Slf4j
public class ChannelManager {
    /**
     * 创建一个channel对象
     * @return channel对象
     */
    public static Channel createChannel(){
        //1.想拿到短连接,需要长连接,长连接的创建方式是工厂,所以需要先有工厂
        ConnectionFactory factory = new ConnectionFactory();
        //2.连接需要参数 host port username password
        factory.setHost("localhost");
        factory.setPort(5672);//tcp协议端口
        factory.setUsername("guest");
        factory.setPassword("guest");
        try{
            //3.尝试获取长连接
            Connection connection = factory.newConnection();
            //4.从长连接中获取channel对象
            Channel channel = connection.createChannel();
            return channel;
        } catch (Exception e) {
            log.error("创建长连接失败",e);
            return null;
        }
    }
}
